O script CopyToGDriver_Sync.v.0.0.35.sh é o módulo principal do projeto CopyToGDriver, responsável por sincronizar pastas locais com o Google Drive utilizando o rclone.
Ele garante execução segura, sem instâncias duplicadas, e mantém logs organizados por pasta e data.
| Variável | Descrição | Valor Padrão |
|---|---|---|
BASE_REMOTE_FOLDER |
Pasta base de sincronização no Google Drive. | rclone |
DELETED_BASE_FOLDER |
Pasta de backup/lixeira remota. | rclone.deleted |
REMOTE_NAME |
Nome do remoto configurado no rclone. | Definido em CopyToGDriver_Config.sh |
LOCAL_FOLDER |
Caminho local da pasta a ser sincronizada. | Definido via parâmetro |
REMOTE_FOLDER |
Caminho remoto de destino relativo ao BASE_REMOTE_FOLDER. |
Definido via parâmetro |
RCLONE_EXCLUDE_FILE |
Arquivo de exclusões. | Opcional |
LOG_RETENTION_DAYS |
Dias de retenção dos logs antes da exclusão. | Definido em config |
ZIP_AFTER_DAYS |
Dias para compressão automática de logs. | Definido em config |
Os parâmetros são processados pela função parse_parameters() do módulo CopyToGDriver_ConfigFunctions.sh.
| Parâmetro | Descrição | Tipo |
|---|---|---|
--dry-run |
Executa em modo de simulação (sem enviar arquivos). | Opcional |
--resync |
Força uma resincronização completa. | Opcional |
--clean-cache |
Limpa o cache local do rclone antes da execução. | Opcional |
--auto-create |
Cria automaticamente pastas remotas ausentes. | Opcional |
--verbose |
Ativa logs detalhados. | Opcional |
--quiet |
Desativa exibição de progresso. | Opcional |
--help |
Exibe ajuda e encerra o script. | Opcional |
show_configuration()Exibe no terminal as configurações atuais do ambiente, incluindo pastas locais, remotas e modos ativos.
Indica visualmente se está em modo simulação, resync, verbose, ou limpeza de cache.
normalize_remote_paths(incoming)Normaliza caminhos remotos fornecidos pelo usuário.
Converte entradas como "blog" → rclone/blog e remove barras redundantes.
Gera duas variáveis úteis:
NORMALIZED_TARGET_REMOTE_PATH: caminho completo remoto (rclone/paulo/docs)NORMALIZED_CLEAN_REMOTE_PATH: caminho relativo (paulo/docs)check_rclone_safety()Garante que não há processos rclone ativos antes da sincronização.
Realiza verificações multiplataforma:
pgrep (Linux/macOS)tasklist (Windows)ps (fallback universal)🔒 Bloqueia completamente a execução caso detecte múltiplas instâncias do rclone.
lock_protect()Evita sincronizações concorrentes da mesma pasta.
Cria lockfiles únicos em /tmp/copytogdriver baseados no caminho da pasta.
Remove automaticamente o lock ao final da execução (via trap EXIT).
sync_folders()Função principal de sincronização.
Executa as seguintes etapas:
lock_protect + check_rclone_safety)--clean-cache)rclonePrincipais parâmetros do rclone utilizados:
rclone sync <LOCAL_FOLDER> <REMOTE_NAME>:<REMOTE_PATH> --backup-dir <REMOTE_NAME>:<DELETED_REMOTE_PATH> --fast-list --transfers 4 --checkers 8 --delete-after --log-file <log_file> [--dry-run] [--verbose] [--quiet] [--resync]
show_last_log()Permite visualizar o log mais recente da pasta sincronizada.
Detecta o sistema operacional e abre o log de forma apropriada:
main()Função principal executada quando o script é chamado diretamente.
Etapas:
parse_parameters()--help) se solicitadosync_folders() após validar pré-requisitosOs logs são armazenados de forma hierárquica:
~/CopyToGDriver_Log/
├── system/
│ └── summary.log # Registro resumido de todas as execuções
└── <nome_da_pasta>/
├── sync-YYYYMMDD-HHMMSS.log
├── sync-YYYYMMDD-HHMMSS.log.gz # logs antigos compactados
rclone ativo antes da execução<rclone.deleted>/<path>/<data># Sincronização normal
./CopyToGDriver_Sync.v.0.0.35.sh --local-folder ./meus_docs --remote-folder projetos/docs
# Simulação sem alterações
./CopyToGDriver_Sync.v.0.0.35.sh --dry-run
# Execução silenciosa e sem prompts
./CopyToGDriver_Sync.v.0.0.35.sh --auto-create --quiet
| Campo | Valor |
|---|---|
| Script | CopyToGDriver_Sync.v.0.0.35.sh |
| Versão | 0.0.0.36 |
| Autores | Paulo SSPacheco + ChatGPT (GPT-5 Thinking) |
| Data | 01/11/2025 |
| Licença | Uso pessoal / interno |
© 2025 Paulo SSPacheco + ChatGPT (GPT-5) — Todos os direitos reservados.